﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Linq;

namespace kysec.CR.Common
{
    public class GetImgFromFCK
    {
        /// <summary>
        /// 取得FCK中HTML中所有图片的 URL。
        /// </summary>
        /// <param name="sHtmlText">HTML代码</param>
        /// <returns>图片的URL列表</returns>
        public static List<string> GetHtmlImageUrlList(string sHtmlText)
        {
            // 定义正则表达式用来匹配 img 标签
            Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);            

            // 搜索匹配的字符串
            MatchCollection matches = regImg.Matches(sHtmlText);

            List<string> sUrlList = new List<string>();

            // 取得匹配项列表
            foreach (Match match in matches)
                sUrlList.Add(match.Groups["imgUrl"].Value);

            return sUrlList;
        }

        /// <summary>
        /// 取得FCK中HTML中所有图片的URL并放入到xelement中
        /// </summary>
        /// <param name="sHtmlText">HTML代码</param>
        /// <param name="number">需要放入到XElement中的元素的个数</param>
        /// <returns>返回XElement列表</returns>
        public static XElement GetHtmlImageUrlXml(string sHtmlText,int number)
        {
            XElement xe = new XElement("root");

            List<string> listUrl = GetHtmlImageUrlList(sHtmlText);

            if (listUrl.Count != 0)
            {
                int length = listUrl.Count > number ? number : listUrl.Count;//判断需要放入几张图片

                for (int i = 0; i < length; i++)
                {
                    xe.Add(new XElement("item",
                                 new XAttribute("url", listUrl[i])));//将图片放入到XElement中元素中
                }
            }
            return xe;
        }


    }
}
